package com.dykj.fireFighting.api.base.enterprise.service;


import com.dykj.fireFighting.api.base.enterprise.dto.EnterpriseDto;
import com.dykj.fireFighting.api.base.enterprise.entity.Enterprise;
import com.dykj.fireFighting.common.core.service.IBaseService;
import com.dykj.fireFighting.common.core.vo.PageVo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 企业信息表
 *
 * @author JacksonTu
 * @date 2018-12-11 13:49:00
 */
public interface IEnterpriseService extends IBaseService<Enterprise> {

    /**
     * 多表信息查询
     *
     * @param par
     * @return
     */
    List<Map<String, Object>> selectEnterpriseList(Map<String, Object> par);

    /**
     * 保存企业信息
     *
     * @param enterprise
     * @return
     */
    Enterprise saveEnterprise(Enterprise enterprise);

    List<Enterprise> getListByBindingCode(String code);

    /**
     * 根据所属地区获取单位
     *
     * @param areaCode
     * @param enterpriseType
     * @return
     */
    List<Enterprise> queryListByAreaCode(String areaCode, int enterpriseType);

    List<Enterprise> queryListByAreaCodeOne(String areaCode, int enterpriseType);

    List<Enterprise> queryListByIndustryCode(String areaCode, int enterpriseType);

    /**
     * 获取社会单位
     *
     * @param bindingCode
     * @return
     */
    List<Enterprise> queryUnitList(String bindingCode);

    /**
     * 获取监控中心下辖的社会单位
     *
     * @param centerUnitId
     * @return
     */
    List<Enterprise> queryUnitSelect(String centerUnitId);

    PageVo<Enterprise> queryUnitSelectPage(EnterpriseDto enterpriseDto);
    /**
     * 根据code 查询 辖区内所有监控中心的绑定码，包括自己
     *
     * @param areaCode
     * @return
     */
    List<String> queryBindCodeByUnitAreaCode(String areaCode);

    /**
     * 根据维保单位获取社会单位
     *
     * @param enterpriseId
     * @return
     */
    List<Enterprise> queryUnitListByMaintenance(String enterpriseId);

    List<Enterprise> querySocialUnits(HashMap<String, Object> params);

    /**
     * 根据社会单位获取维保单位
     *
     * @param params
     * @return
     */
    List<Enterprise> queryMaintenanceListByUnit(Map<String, Object> params);

    /**
     * 通过绑定码获取监控中心单位信息
     * @param bindingCode
     * @return
     */
    Enterprise getInfoByBindingCode(String bindingCode);


    List<Enterprise> getAllSocialUnit();


    Enterprise queryById(String toString);

    List<Enterprise> getAllCenter(ArrayList<String> areaList);

    Integer getSocialNum(long unitid);

    Integer getSocialOnlineNum(long unitId);

    /**
     * 根据监控中心获取维保单位
     *
     * @param unitId
     * @return
     */
    List<Enterprise> getEnterpriseListByUnitId(String unitId);

    List<Enterprise> queryByIds(List<String> unitIdList);

    List<Enterprise> selectByType(int i);
}

